import router from '@/router';
import store from '@/store';
import ACCESS_ENUM from '@/access/accessEnum';
import checkAccess from '@/access/checkAccess';

router.beforeEach(async (to, from, next) => {
  console.log('跳转页面权限验证：登录用户信息', store.state.user.loginUser);
  let loginUser = store.state.user.loginUser;

  //如果之前没登陆过，自动登录
  if (!loginUser || !loginUser.userRole) {
    // 加await 是为了等用户登录成功之后，再执行后续的代码
    await store.dispatch('user/getLoginUser');
    loginUser = store.state.user.loginUser;
  }

  const needAccess = to.meta?.access ?? ACCESS_ENUM.NOT_LOGIN;
  // 要跳转的页面必须登录
  if (needAccess !== ACCESS_ENUM.NOT_LOGIN) {
    // 如果没有登录，跳转到登录页面
    if (!loginUser || !loginUser.userRole || loginUser.userRole === ACCESS_ENUM.NOT_LOGIN) {
      next(`/user/login?redirect=${to.fullPath}`);
      return;
    }
    // 登录了，没有权限，跳到无权限页面
    if (!checkAccess(loginUser, needAccess as string)) {
      next('/noAuth');
      return;
    }
  }
  next();
});
